Web services are server applications that communicate over the World Wide Web's (WWW) Hypertext Transfer Protocol (HTTP). A web service is a software component provided through a network-accessible endpoint and can be called from other applications. For example, a financial company may have a web service that provides up to the minute stock quotes for customers who do their trading with that financial company. The information provided by the web service can be read from a web page and displayed, or read from a stand-alone application on a customer's desktop computer.
REpresentational State Transfer (REST) is a style of software architecture for distributed systems such as the World Wide Web. REST-style architectures include clients and servers. Clients can initiate requests to the servers, which can process the requests and return appropriate responses. In REST, requests and responses are built around the transfer of representations of resources. A representation of a resource is typically a document that captures the current or intended state of the resource. For example, the resource may be stock quotes.
A RESTful web service is a web service that is implemented using HTTP and the principals of REST. For example, a RESTful web service may be a customer data management web service and may have three resources: (1) a resource that is a list of all customers, (2) a resource that is data for a specific customer, and (3) a resource for adding a customer to the customer data. The RESTful resources can each have a uniform resource identifier (URI), which client applications can use to consume the resource.
A software developer may wish to build a client application to consume the resources provided by a RESTful web service. Typically, the software developer has to have the documentation for the RESTful web service and the documentation for the server hosting the RESTful web service. The software developer usually has to manually sort through the documentation to obtain the appropriate information for creating code for the client application.
A software developer may be familiar with a particular programming language, for example, Python or Java, but may not be familiar with HTTP, which the RESTful web service is based on. In some conventional solutions, a software developer can use a software development kit (SDK) that specializes in a particular language (e.g., Python, Java) to create a RESTful web service client. A software development kit is typically a set of software development tools that allows for the creation of applications for a certain software framework. The SDK is typically provided by the RESTful web service provider. The creation and updating of SDKs can be a time consuming process. In conventional solutions, when there is a change made to a RESTful web service, each of the SDKs are manually re-coded to reflect any changes made to the RESTful web service. Some changes in the RESTful web service may not be immediately detected and an SDK may inadvertently not be updated which can lead to problems in client communication with the RESTful web service.